import { setToken, getToken, removeToken } from '@/utils/auth'
import { loginAPI, getInfoAPI } from '@/api/user'
import { Notification } from 'element-ui'
import router from '@/router'
const state = {
  token: getToken(),
  userInfo: {},
  route: []
}
const mutations = {
  setToken(state, token) {
    setToken(token)
    state.token = token
  },
  setUserInfo(state, payload) {
    state.userInfo = payload
  },
  removeToken() {
    removeToken()
    router.push('/login')
    Notification({
      type: 'warning',
      title: '警告',
      message: '请先登录',
      duration: 1400,
      position: 'top-left'
    })
  },
  setRoutes(state, payload) {
    state.route = payload
  }
}
const actions = {
  // 定义mutations方法
  // 定义actions方法
  // 获取用户信息
  // 获取接口传参登录
  actionsLogin(context, payload) {
    return loginAPI(payload)
      .then(res => {
        context.commit('setToken', res.data)
        return Promise.resolve(res)
      })
      .catch(err => {
        return Promise.reject(err)
      })
  },

  // 获取用户资料， 头像， 名称
  // 步骤：
  //   封装API
  //   定义Actions方法
  //   mapActions调用方法
  //   created引用调用的方法
  async actionsUserInfo(context, payload) {
    const { data } = await getInfoAPI()
    context.commit('setUserInfo', data)
    return data
  }

  // 获取动态路由，渲染列表
  // 1. 封装mutations， Actions
  // 2. 定义states
  // 3。 layout组件中， mapStates调用方法
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

